#include<iostream>
#include<fstream>
#include<algorithm>
#include<cstdio>
#include<string>
#include<cstring>
#include<cmath>
#include<stdlib.h>
using namespace std;
int n,s,a,jsqd,jsqf;
string st;
struct data
{
	bool op;
	string ad;
}S[1010];
bool check(string x)
{
	s=jsqd=jsqf=0;
	if(x[0]=='.' || x[0]==':' || x[x.size()-1]=='.' || x[x.size()-1]==':')
		return 0;
	for(int i=1;i<x.size()-1;i++)
		if((x[i-1]=='.' || x[i-1]==':') && (x[i]=='.' || x[i]==':'))
			return 0;
	for(int i=1;i<x.size()-1;i++)
		if((x[i-1]=='.' || x[i-1]==':') && x[i]=='0' && x[i+1]!='.' && x[i+1]!=':')
			return 0;
	for(int i=0;i<x.size();i++)
	{
		if(x[i]=='.')
		{
			jsqd++;
			if(s<0 || s>255)
				return 0;
			s=0;
		}
		if(x[i]==':')
		{
			jsqf++;
			if(s<0 || s>255)
				return 0;
			s=0;
		}
		if(x[i]!='.' && x[i]!=':')
			s=s*10+(int)(x[i]-'0');
		if(s>65535)
			return 0;
	}
	return s>=0 && s<=65535 && jsqd==3 && jsqf==1;
}
int main()
{
	freopen("network.in","r",stdin);
	freopen("network.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>st;
		if(st!="Server")
			S[i].op=1;
		cin>>S[i].ad;
	}
	for(int i=1;i<=n;i++)
	{
		if(check(S[i].ad)==0)
		{
			cout<<"ERR"<<endl;
			continue;
		}
		a=0;
		for(int j=1;j<i;j++)
			if(S[j].ad==S[i].ad && S[j].op==0)
			{
				a=j;
				break;
			}
		if(S[i].op==0)
		{
			if(a==0)
				cout<<"OK"<<endl;
			else
				cout<<"FAIL"<<endl;
		}
		else
		{
			if(a==0)
				cout<<"FAIL"<<endl;
			else
				cout<<a<<endl;
		}
	}
	return 0;
}
